package com.java.java网络.exercise2;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

/**
 * tcp字节流 - 客户端 交互
 */
public class NetThreeC2 {
    public static void main(String[] args) throws IOException {
        // 思路 客户端向服务端发送请求数据
        // 1. 连接服务端（ip，端口）
        Socket socket = new Socket("192.168.0.124", 9999); // 连接这台主机的9999端口
        System.out.println("连接成功" + socket.getClass());
        // 2. 连接上返回Socket对象，得到和socket关联的输出流对象
        OutputStream outputStream = socket.getOutputStream();
        // 3. 获取输入流，读数据，并显示
        outputStream.write("hello, server".getBytes());
        socket.shutdownOutput();// 设置结束标记
        System.out.println("结束标记");
        /*
         * 4.客户端接收服务端的响应数据
         * 连接上返回Socket对象，得到和socket关联的输入流对象
         * 获取输入流，
         * 读数据，并显示
         */
        InputStream inputStream = socket.getInputStream();
        byte[] buf = new byte[1024];
        int readLen = 0;
        while ((readLen = inputStream.read(buf)) != -1){
            System.out.println("读取到的服务端数据：" + new String(buf, 0, readLen));
        }

        // 5.关闭流对象和socket, 必须关闭
        inputStream.close();
        outputStream.close();
        socket.close();
        System.out.println("客户端退出...");
    }
}
